package net.sf.rose.jdbc.service;

import net.sf.rose.jdbc.bean.TableBean;

/**
 * 类说明：数据库操作元数据定义类
 * <p>
 * 数据库连接池的初始化，支持配置多个数据库连接
 * <p>
 * 数据库表和视图的定义缓存加载
 * <p>
 * 数据库外部SQL文的加载
 * 
 * @author fengjian
 * @since 2019/05/6
 */
public class MetaServiceProxy implements MetaService {

	private MetaService instance = null;

	public void setMetaService(MetaService meta) {
		instance = meta;
	}

	/**
	 * 功能：根据数据库表或视图名称查找对应数据库表的元数据
	 * 
	 * @param tableName - 数据库表或视图名称
	 * @return 数据库表定义元数据类
	 */
	public TableBean getTableBean(String tableName) {
		return instance.getTableBean(tableName);
	}

	/**
	 * 功能：数据库操作初始化准备
	 * <p>
	 * 在配置文件中定义的，所有以db.开头的都是关于数据库的属性定义
	 * <p>
	 * db.databaseName：定义本项目要操作的数据库名，多个以逗号隔开，第一个是主操作数据库
	 * <p>
	 * 以db.数据库名.开头定义的是对应的数据库连接的定义，多个以数据库名作分类区分
	 * 
	 */
	public void initial() {
		instance.initial();
	}

	/**
	 * 功能：根据数据库实体类更新数据库表结构和视图
	 * @param service - 数据库连接服务
	 * @param clazz - 表定义实体类
	 * @param updateDb - 同时更新数据库中的表定义
	 */
	public void updateTableDefine(Service service, Class<?> clazz, boolean updateDb) {
		instance.updateTableDefine(service, clazz, updateDb);
	}

	/**
	 * 功能：更新数据库表结构或视图定义
	 * @param service  - 数据库连接服务
	 * @param table    - 新的表定义
	 * @param updateDb - 同时更新数据库中的表定义
	 */
	public void updateTableDefine(Service service, TableBean table, boolean updateDb) {
		instance.updateTableDefine(service, table, updateDb);
	}
}
